(logo)  Skalkommandon och ARexx-program

AWeb erbjuder ett unikt och kraftfullt sätt att köra skalkommandon och ARexx-program från en sida genom att bara klicka på en länk eller genom att skicka ett formulär. Med lite ansträngning kan du skapa komplexa program som använder AWeb för sitt användargränssnitt, som startar program som dynamiskt skapar nya dokument som läses av AWeb via ARexx, med mera.

Även om denna funktion kan vara mycket användbar kan den också vara mycket farlig. Därför fungerar detta bara på lokala sidor (med en URL som börjar med file://localhost/) och om rutan Tillåt skalkommandon i länkar är kryssad. Om den inte är kryssad kommer AWeb att öppna ett varningsfönster när du följer en sådan hyperlänk. I detta varningsfönster kan du avbryta kommandot eller låta det köras.

Enkla skalkommandon

För att inkludera ett enkelt kommando, lägg bara till en länk i dokumentet som pekar på en URL med formatet

   x-aweb:command/ditt_DOS-kommando

Om användaren klickar på länken kommer ditt_DOS-kommando att utföras. Utmatningen från kommandot visas i ett konsollfönster som automatiskt öppnas, såvida du inte anger ett annat utmatningssätt i ditt kommando.

Eftersom kompatibelt HTML-läge avslutar en URL vid ett mellanslag, se till att du har ersatt alla mellanslag i kommandot med " ". Annars kommer dina kommandon inte att fungera om användaren har valt kompatibelt HTML-läge.

Exempel: <a href="x-aweb:command/dir&#32;sys:&#32;all">visa låda</a> låter användaren köra kommandot dir sys: all genom att klicka på orden "visa låda".

OBS: DOS-kommandot exekveras i ett separat skal med den aktuella lådan satt till samma som den för AWeb. Du bör bara använda absoluta sökvägar i DOS-kommandot, då resultatet annars kan bero på vilken låda som råkade vara aktuell då du startade AWeb. När AWeb kör kan du använda tilldelningen AWebPath: som en absolut referens till den låda där AWebs programfil finns.

ARexx-program

ARexx-program startas från din sida på ett liknande sätt. Lägg bara till en vanlig länk som pekar på en URL med formatet

   x-aweb:rexx/ditt_ARexx-program

Om användaren klickar på länken kommer ditt_ARexx-program att startas med ARexx-porten för det aktuella fönstret satt som den förvalda kommandoporten.

Parametrar

Du kan använda HTML-formulär eller klickbara kartor för att skicka parametrar till ditt DOS-kommando eller ARexx-program.

Formulär

Ange attributet ACTION="x-aweb:command/ditt_kommando" i <FORM>-märket för att utföra kommandot när användaren skickar formuläret. På samma sätt kan du inkludera attributet ACTION="x-aweb:rexx/ditt_program" för att köra ett ARexx-program.

METHOD=GET

För formulär med METHOD=GET (det förvalda) konverteras formulärdatan till argument i AmigaDOS-format: fältnamnet används som argumentnamn (nyckelord) och fältvärdet används som argumentvärde. Värdet kommer att få citattecken runt sig, med escape-, radmatnings- och citattecken angivna på det sätt som krävs av AmigaDOS.

Obs: flaggor (/S) kan inte anges på detta sätt. Du kan använda ett skript istället, som exemplet nedan visar.

Parametrar för ARexx-program skickas på samma sätt som för DOS-program. Argumentsträngen innehåller namnet, ett likhetstecken, och det citerade värdet för varje formulärfält. Se det andra exemplet nedan för hur dessa argument kan tolkas.

Observera att den totala längden för alla argument som skickas på det här sättet är begränsad till cirka 4000 tecken; resten trunkeras. Om ditt formulär kan generera längre argument, använd METHOD=POST istället.

METHOD=POST

För formulär med METHOD=POST skapas en temporär fil. Kommandot eller ARexx-programmet kommer att anropas med exakt ett argument, filnamnet. Den temporära filen innehåller meddelandet på samma sätt som det skulle ha skickas till en HTTP-server. Det betyder i korthet att:

Det är upp till kommandot eller ARexx-programmet att radera den temporära filen efteråt.

Observera att du bör använda den förvalda kodningstypen (ENCTYPE="application/x-www-form-urlencoded", eller ange inte attributet ENCTYPE). Kodningstypen multipart/form-data stöds inte för formulär som skickas till skalkommandon och ARexx-program.

För filuppladdningsfält (<INPUT TYPE=FILE>) inkluderas filens namn i meddelandet när den förvalda kodningen används, inte filens innehåll, vilket vore fallet för formulär med kodningen multipart/form-data. Det är förmodligen vad du vill ha i ditt kommando eller ARexx-program.

Klickbara kartor

När du använder en klickbar karta skickas x- och y-koordinaterna för muspekaren inom bilden som parametrar till kommandot, utan några nyckelord.

Läs in resultatet i AWeb

Om ditt skript eller program har skapat ett HTML-dokument (eller bara en enkel textfil) kan du automatiskt läsa in filen i AWeb. Använd ARexx-kommandot OPEN för detta. Om du använder samma namn på din fil flera gånger, i olika syften, se till att du lägger till flaggan RELOAD för att förhindra att AWeb använder föregående version av dokumentet igen (som kan finnas i fickminnet).

Detta fungerar naturligtvis bättre från ARexx-program än från DOS-skript. I DOS-skript kan du inte ta reda på vilken ARexx-port som OPEN-kommandot skall skickas till.

Ett annat sätt är att ladda det resulterande dokumentet direkt till AWeb medan du skapar det, utan att gå via en temporär fil. Se kommandot CHANOPEN för mer information.

Exempel

Nedan finns två exempel på denna funktion. Se koden för denna sida och det körda programmet för att förvissa dig om att formuläret inte kommer att orsaka några skador. Se sedan till att rutan Tillåt skalkommandon i länkar i programinställningarna är kryssad och prova formuläret.

Enkelt skalkommando

Det här exemplet visar bara innehållet av lådan Sys: i ett separat konsollfönster: visa låda.

ARexx-program

Det här exemplet visar innehållet av den valda lådan.

Låda:

Visa bara lådor, inte filer

Visa underlådor


<- Tillbaka till index.